Opérateurs
Opérateurs Arithmétiques
Ces opérateurs permettent d'effectuer des opérations mathématiques.
| Opérateur | Description | Exemple | Résultat (si a = 10 et b = 3) |
|---|---|---|---|
+ | Addition | a + b | 13 |
- | Soustraction | a - b | 7 |
* | Multiplication | a * b | 30 |
/ | Division (entière si les deux opérandes sont des entiers, sinon flottante) | a / b | 3 (division entière), 3.333... (division flottante si a ou b est un double ou float) |
% | Modulo (reste de la division entière) | a % b | 1 |
++ | Incrémentation (préfixe ou postfixe) | a++ ou ++a | 10 (puis 11) ou 11 |
-- | Décrémentation (préfixe ou postfixe) | a-- ou --a | 10 (puis 9) ou 9 |
Différence entre a++ et ++a :
a++(post-incrémentation) : la valeur deaest utilisée avant d'être incrémentée.++a(pré-incrémentation) : la valeur deaest incrémentée avant d'être utilisée.
Exemple :
int a = 5;
int b = a++; // b prend la valeur 5, puis a devient 6
int c = ++a; // a devient 7, puis c prend la valeur 7
System.out.println("b : " + b); // Affiche 5
System.out.println("c : " + c); // Affiche 7
System.out.println("a : " + a); // Affiche 7
Comparaison avec Python :
Python n'a pas d'opérateurs ++ ou --. Il faut utiliser les opérateurs d'affectation.
# Python
x = 5
x += 1 # Équivalent à x = x + 1
print(x) # Affiche 6
# Pas possible en Python:
# x++ # Erreur de syntaxe
Impact sur la performance :
La pré-incrémentation (++a) est généralement plus efficace que la post-incrémentation (a++) car elle ne crée pas de copie temporaire de la valeur. Cependant, les compilateurs modernes optimisent souvent cette différence.
// Moins efficace (post-incrémentation)
for (int i = 0; i < 1000; i++) { ... }
// Slightly plus efficace (pré-incrémentation)
for (int i = 0; i < 1000; ++i) { ... }
Opérateurs d'Affectation
Ces opérateurs affectent une valeur à une variable.
| Opérateur | Description | Exemple | Équivalent à |
|---|---|---|---|
= | Affectation simple | a = 10 | |
+= | Addition et affectation | a += b | a = a + b |
-= | Soustraction et affectation | a -= b | a = a - b |
*= | Multiplication et affectation | a *= b | a = a * b |
/= | Division et affectation | a /= b | a = a / b |
%= | Modulo et affectation | a %= b | a = a % b |
Exemple :
int x = 5;
x += 3; // x vaut maintenant 8 (5 + 3)
3. Opérateurs de Comparaison
Ces opérateurs comparent deux valeurs et renvoient un booléen (true ou false).
| Opérateur | Description | Exemple |
|---|---|---|
== | Égal à | a == b |
!= | Différent de | a != b |
> | Supérieur à | a > b |
< | Inférieur à | a < b |
>= | Supérieur ou égal à | a >= b |
<= | Inférieur ou égal à | a <= b |
Exemple :
int age = 20;
boolean estMajeur = age >= 18; // estMajeur vaut true
4. Opérateurs Logiques
Ces opérateurs combinent des expressions booléennes.
| Opérateur | Description | Exemple |
|---|---|---|
&& | ET logique (AND) : true si les deux opérandes sont true | a > 5 && b < 10 |
| ` | ` | |
! | NON logique (NOT) : inverse la valeur de l'opérande (true devient false, etc.) | !(a > 5) |
Exemple :
int x = 5;
int y = 0;
if (y != 0 && x / y > 2) {
System.out.println("Résultat de la division : " + (x / y));
}
if (x > 10 || y++ > 0){
System.out.println("y = " + y);
}
5. Opérateurs Bit à Bit
Ces opérateurs manipulent les bits des opérandes.
| Opérateur | Description | Exemple (si a = 5 (0101 en binaire) et b = 3 (0011 en binaire)) | Résultat |
|---|---|---|---|
& | ET bit à bit : 1 si les deux bits sont 1, sinon 0 | a & b | 1 (0001) |
| | OU bit à bit : 1 si au moins un des bits est 1, sinon 0 | a | b | 7 (0111) |
^ | OU exclusif (XOR) bit à bit : 1 si les bits sont différents, 0 s'ils sont identiques | a ^ b | 6 (0110) |
~ | NON bit à bit (complément à un) : inverse tous les bits | ~a | -6 |
<< | Décalage à gauche | a << 1 | 10 (1010) |
>> | Décalage à droite avec conservation du signe | a >> 1 | 2 (0010) |
>>> | Décalage à droite sans conservation du signe | a >>> 1 | 2 (0010) |
6. Opérateur Ternaire
condition ? valeur_si_vrai : valeur_si_faux;
Exemple :
int age = 15;
String statut = (age >= 18) ? "Majeur" : "Mineur";
7. Opérateur instanceof
objet instanceof Classe
Exemple :
String chaine = "Bonjour";
boolean estUneChaine = chaine instanceof String;
Priorité des opérateurs
++,--(préfixe)!,~,+,-(unaire)*,/,%+,-<<,>>,>>><,<=,>,>=,instanceof==,!=&^\|&&\|\|?:=,+=,-=,*=,/=,%=,&=,^=,\|=,<<=,>>=,>>>=